Industries that manufacture motor vehicles, airplanes and other complex mechanical equipment require designers and engineers to work concurrently on the same large complex design. The ability to work concurrently on the same design allows multiple users to collaborate on design changes in real-time and both reduce the overall design time and improve the quality of the final designed product.
Computer systems allow designers and engineers to electronically capture and manipulate multidimensional design graphics. The computer software that electronically captures, displays and manipulates graphics displayed on a computer screen is generally referred to as an application program or application. For more than one user to view or work on the same electronically captured image, 3-D intensive graphic, text, or set of numbers at the same time, the application must be shared with each user workstation site. The shared application should provide concurrent and consistent views of the same design images or graphics in real-time at remote user workstations. This changing design trend from sequential to concurrent processed design efforts can improve productivity. To address this evolution, systems and methods must be capable of simultaneously sharing and managing dynamic execution of multiple existing applications at remote workstations.
For graphical user interfaces (GUIs), most applications support two types of windows processes as taught in Halogenation et aL, “The BERKOM Multimedia Collaboration Service,” ACM Multimedia 93 (1993), Gutekunst et aL, “A Distributed and Policy-Free General-Purpose Shared Window System,” IEEE (1995), pages 51-61; and Nye, XLib Programming Manual, O'Reilly & Associates, Inc. (1992).
A first window process-type is an accessible or static window process, which is directly accessible by use of an input device such as a keyboard, mouse or other pointing device that actuates, for example, virtual buttons or sliders. A second window process-type is an inaccessible or hidden window-process, for example, pop-up or pull-down menu items, which are generally not directly accessible. An inaccessible process refers to any hidden process such as a menu item that cannot dynamically receive events managed by other processes.
Currently, shared application systems lack a sufficient means for verifying the synchronization of applications consisting of images. The current technologies for synchronization verification include the exclusive “OR” (i.e., XOR), thumbnail image, and cyclic redundancy check methods.
The exclusive “or” (XOR) method is one in which one image is laid upon another image using a logical XOR operator. If the images are identical, all the pixels will have been negated and the resulting image will be black. Any difference between the images can be readily identified. A disadvantage with the XOR methodology is that the method requires significant bandwidth, and is inefficient for automated verification of multiple applications. This method is especially inferior for collaborative sessions occurring across low bandwidth connections.
The thumbnail image method includes the use of thumbnail images, which are smaller representations of the original image. Typically, the thumbnail image is an image that is one to two inches in size. Users are then required to visually compare the application image against the thumbnail image and decide whether the images are synchronized. The major problem with the thumbnail image method is that thumbnail images are only approximations and cannot be used to accurately determine whether the applications are synchronized. This methodology also requires that the user make the determination from visual representations. This user interaction creates the inefficiency and inaccuracy in the thumbnail image method.
Another current method for verifying synchronization of applications, is through the use of the cyclic redundancy check (CRC), which is similar to, but more complex than a check sum comparison. The CRC method calculates a unique integer number per image. These unique integer numbers are then used to compare the images. If the numbers are identical, the pictures are assumed to be identical. The problem in utilizing the CRC method is that the CRCs are best suited for automated verification across bandwidth connections, but are limited in that they only detect when the images have lost synchronization. CRCs do not provide any indication that the applications themselves may be out of synchronization even though the images are identical. Currently, designers lack the capability to provide synchronization verification of multiple applications across the remote system.
Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.